/**
* Fichier pour les ressource commune pour les boites aux lettres
*\file messqueue.h
*\author H4201
*/
#ifndef _MESSQUEUE_H_
#define _MESSQUEUE_H_

/*TYPEDEFS AND STRUCTURES*/

/**
 \struct message_t
 structure des messages
*/
typedef struct message {
    long type;   /*!< type du message, voir l'enum ::type_message_t */
    int params[13];  /*!< paramètres, dépend du type */
} message_t;

/**
 \enum type_message_t
  les différents types des messages
*/
typedef enum type_message {
    AU = 0,             /*!< Arrêt d'urgence */
    ERRPIECE = 1,       /*!< Timeout, pas de pièce */
    ERRCARTON = 2,      /*!< Pas de carton */
    ERRIMPR = 3,        /*!< Problème sur l'imprimante */
    ERRDEFECT = 4,      /*!< Trop de pièces défectueuses */
    ERRFILE = 5,        /*!< Trop de carton sur la file d'attente */
    ERRPALETTE = 6,     /*!< Pas de palette */
    ERREMBAL = 7,       /*!< Erreur emballage */
    ERRRETRAIT = 8,     /*!< Retrait du stock impossible */
    INIT = 101,         /*!< Initialisation de l'application */
    GO = 102,           /*!< Lancement de la production */
    ARRET = 103,        /*!< Arrêt du système */
    ARRDEG = 104,       /*!< Arrêt en mode dégradé */
    IMPRIMER = 105,     /*!< Passage d'un carton à l'imprimante */
    EMPALETTER = 106,   /*!< Passage d'un carton vers l'empalettage */
    STOCKER = 107,      /*!< Envoi d'une palette vers le stockage */
    DEMRETRAIT = 108,   /*!< Demande de retrait de commande */
    FINLOT = 109,       /*!< Fin du lot */
    STOCKOK = 110,      /*!< Stockage réussi */
    RETRAITOK = 111,    /*!< Retrait réussi */
    REPARERR = 112,     /*!< Erreurs réparées */
    REPRNORM = 113,     /*!< Reprise normale */
    REPRSUPP = 114,     /*!< Reprise en supprimer le carton en cours */
    STOPLOT = 115       /*!< Arret du lot en cours */
} type_message_t;

/*DEFINITIONS AND MACROS*/
/**
 Boite aux lettres pour le journal
*/
#define BAL_MESSAGES_NAME "/BalMessages"
/**
 Boite aux lettres pour les erreurs
*/
#define BAL_ERREURS_NAME "/BalErreurs"
/**
 Boite aux lettres pour retirer des palettes dans le stock
*/
#define BAL_RETRAIT_NAME "/BalRetrait"


//local au noyau
#define BAL_SUPERVISEUR_NAME "/BalSuperviseur"


#endif // _MESSQUEUE_H_
